package com.salelogistics.sale.service;

import java.util.List;

import com.salelogistics.sale.domain.SmsDeliveryPlan;
import com.salelogistics.sale.domain.dto.DeliveryPlanDto;
import com.salelogistics.sale.domain.vo.DeliveryPlanVo;

/**
 * 月配送计划Service接口
 *
 * @author Hu Kangying
 * @date 2023-07-13
 */
public interface ISmsDeliveryPlanService {
    /**
     * 查询月配送计划
     *
     * @param planId 月配送计划主键
     * @return 月配送计划
     */
    public SmsDeliveryPlan selectSmsDeliveryPlanByPlanId(Long planId);

    /**
     * 查询月配送计划列表
     *
     * @param smsDeliveryPlan 月配送计划
     * @return 月配送计划集合
     */
    public List<SmsDeliveryPlan> selectSmsDeliveryPlanList(SmsDeliveryPlan smsDeliveryPlan);

    List<DeliveryPlanVo> selectDeliveryPlanList(SmsDeliveryPlan smsDeliveryPlan);

    /**
     * 新增月配送计划
     *
     * @param smsDeliveryPlan 月配送计划
     * @return 结果
     */
    int insertSmsDeliveryPlan(SmsDeliveryPlan smsDeliveryPlan);

    int insertSmsDeliveryPlanWithDetails(DeliveryPlanDto deliveryPlanDto);

    /**
     * 修改月配送计划
     *
     * @param smsDeliveryPlan 月配送计划
     * @return 结果
     */
    int updateSmsDeliveryPlan(SmsDeliveryPlan smsDeliveryPlan);
    int updateSmsDeliveryPlanWithDetails(DeliveryPlanDto deliveryPlanDto);

    /**
     * 批量删除月配送计划
     *
     * @param planIds 需要删除的月配送计划主键集合
     * @return 结果
     */
    public int deleteSmsDeliveryPlanByPlanIds(Long[] planIds);

    /**
     * 删除月配送计划信息
     *
     * @param planId 月配送计划主键
     * @return 结果
     */
    public int deleteSmsDeliveryPlanByPlanId(Long planId);

    int processDeliveryPlan(Long planId,boolean flag);

    int saveBatchPlan(DeliveryPlanDto deliveryPlanDto);

}
